/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.saber.certificacao.beansjsf.prova.controler.implementacao;

import br.com.saber.certificacao.beansjsf.prova.controler.ProvaService;
import br.com.saber.certificacao.ejbs.stateless.interfaces.ProvaBeanLocal;
import br.com.saber.certificacao.enums.TipoProva;
import br.com.saber.certificacao.modelos.Prova;
import br.com.saber.certificacao.modelos.Resposta;
import br.com.saber.certificacao.utils.UtilMetodos;
import java.util.ArrayList;
import java.util.List;
import java.util.TreeSet;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

/**
 *
 * @author gbvbahia
 */
public class ProvaComentada extends ProvaService{

    private boolean liberaObservacao = true;
    
    public ProvaComentada(Prova prova, ProvaBeanLocal provaBean) {
        super(prova, provaBean);
    }

    @Override
    public void liberarObservacao(FacesContext fc) {
        if (this.provaBean.isRespostaCorreta(questaoAtual)) {
            UtilMetodos.messageFactoringFull("provaComentadaFazendoQuestaoCorreta", FacesMessage.SEVERITY_INFO,fc);
        } else {
            UtilMetodos.messageFactoringFull("provaComentadaFazendoQuestaoErrada", FacesMessage.SEVERITY_WARN,fc);
        }
    }

    @Override
    public void exibeInformacaoSobreTipoDeProva(FacesContext facesContext) {
        UtilMetodos.messageFactoringFull("provaComentadaCarregada", FacesMessage.SEVERITY_INFO,facesContext);
    }

    @Override
    public boolean isLiberaObservacao(FacesContext facesContext) {
        return liberaObservacao;
    }

    @Override
    public TipoProva tipoProva(FacesContext facesContext) {
        return TipoProva.COMENTADA;
    }
    
    @Override
    public void questaoProxima() {
        super.questaoProxima();
    }    
    
    @Override
    public void questaoAnterior(){
        super.questaoAnterior();
    }

    @Override
    public boolean isProvaComentada(FacesContext facesContext) {
        return true;
    }

    @Override
    public List<String> getRespostasDisponiveisObservacao(FacesContext facesContext) {
        List<String> toReturn = new ArrayList<String>();
        if (this.questaoAtual != null) {
            for (Resposta resposta : new TreeSet<Resposta>(this.questaoAtual.getQuestao().getRespostas())) {
                toReturn.add(resposta.getComentario());
            }
        }
        return toReturn;
    }
    
}
